/**
 * @type {Number}
 *
 * @properties={typeid:35,uuid:"410102A3-5D52-41D7-89AF-2D4D90FB8038",variableType:8}
 */
var f_diferencia = null;

/**
 * @type {Number}
 *
 * @properties={typeid:35,uuid:"E25C489A-19FB-4D2F-B794-F9F7516EB1C9",variableType:4}
 */
var es_nro_manual = 0;

/**
 * @type {Number}
 *
 * @properties={typeid:35,uuid:"66A36F7D-E07F-4794-BC3B-14749C079E26",variableType:4}
 */
var es_preview = 0;

/**
 * @type {Number}
 *
 * @properties={typeid:35,uuid:"C5DF2BC9-63B9-4CC7-9730-A240E782C171",variableType:8}
 */
var f_total_efectivo = null;

/**
 * @properties={typeid:24,uuid:"0DAC68A0-7898-47DB-9DE9-5024069F83AE"}
 * @AllowToRunInFind
 */
function confirmar()
{
	esconderErrores()
	// VALIDACIONES	
	var $error = 0
	if (!cliente_id)
	{
		elements.lbl_error_cliente.visible = true
		$error = 1
	}
	else
	{
		totalizar();
		var $credito = 0
		if (fac_cabecera_to_clientes.credito_asignado)
			$credito = fac_cabecera_to_clientes.credito_asignado
			if (total > $credito && fac_cabecera_to_cond_pago.dias != 0)
		{
			globals.DIALOGS.showWarningDialog('Aviso','El total excede al crédito del cliente','OK')
			return false;
		}
	}
	if (!fecha)
	{
		elements.lbl_error_fecha.visible = true
		$error = 1
	}
	if (total <= 0)
	{
		elements.lbl_error_total.visible = true
		$error = 1
	}
	if (!cond_pago_id)
	{
		elements.lbl_error_cond_pago.visible = true
		$error = 1
	}
	if (!globals.gdeposito)
	{
		elements.lbl_error_deposito.visible = true
		$error = 1
	}
	if (es_nro_manual && !nro_factura)
	{
		elements.lbl_error_nro_factura.visible = true
		$error = 1
	}
	if (globals.zparam_usa_proyecto == 1 && proyecto_id == null)
	{
		elements.lbl_error_proyecto.visible = true
		$error = 1
	}
	if (globals.gtotal_valores == null || globals.gtotal_valores <= 0)
	{
		globals.DIALOGS.showWarningDialog('Aviso','Debe informar Valores','OK')
		fac_cabecera_to_fac_det_valores.newRecord()
		elements.tabs_20.tabIndex = 2
		return false;
	}
	if (Math.abs(globals.gtotal_valores - total) > 0.009)
	{
		var resp = globals.DIALOGS.showWarningDialog('Aviso', 'Total de Valores ingresados difiere del Total de ' + fac_cabecera_to_tipo_doc.descripcion +  '. ¿Confirma?',  "OK" );
		return false;
	}

	// ELIMINAR RENGLONES en BLANCO
	var $origenes = [new Array(), new Array()]
	var i = 1;
	while (i <= fac_cabecera_to_fac_detalle.getSize())
	{
		var $rcd = fac_cabecera_to_fac_detalle.getRecord(i)
		$rcd.msj_error = ''
		if ($rcd.producto_id == null)
		{
			fac_cabecera_to_fac_detalle.deleteRecord(i);
		}
		else
		{
			if ($rcd.fac_detalle_to_productos.tipo_descripcion != 2)
			{
				if (!$rcd.cantidad_dec)
				{
					$rcd.msj_error = '-Cantidad '
					$error = 1
				}
				if (!$rcd.precio_unitario)
				{
					$rcd.msj_error += '-P Unit.'
					$error = 1
				}
				var $idx = $origenes[0].indexOf($rcd.fac_detalle_to_productos.origen)
				if ($idx == -1)
				{
					$origenes[0].push($rcd.fac_detalle_to_productos.origen)
					$origenes[1].push($rcd.total_renglon)
				}
				else
				{
					$origenes[1][$idx] += $rcd.total_renglon
				}
				$rcd.pendiente_entrega = $rcd.cantidad_dec
			}
			i++
		}
	}	

	if ($error)
	{
		globals.DIALOGS.showWarningDialog('Aviso','Por favor, complete todos los campos obligatorios','OK')
		return false
	}
	
	// GRABA DOMICILIO INGRESADO
	if (cli_domicilios_id == null)
	{   
		if (entrega_entre_calles==null && entrega_descripcion==null && entrega_localidad==null && entrega_lugar==null &&	entrega_observaciones==null &&  entrega_provincia_id==null && entrega_telefono==null )
		{ // no lleno domicilio
			if (retira == 0) //si no retira hay que entregarlo en alguna direccion
		 	{
				resp = globals.DIALOGS.showQuestionDialog('Generador de Facturas y Notas', "El cliente no retira, ¿Informa Domicilio de Entrega ?", "Si" , "No");
				if (resp == "Si")
				{
					elements.tabs_20.tabIndex = 3;
					return false; 
				}
			}
		}
		else
		{ // graba
			if ( entrega_entre_calles && entrega_localidad && entrega_provincia_id && entrega_telefono && entrega_lugar)
			{
				fac_cabecera_to_clientes.clientes_to_cli_domicilios.newRecord();
				fac_cabecera_to_clientes.clientes_to_cli_domicilios.descripcion		= entrega_descripcion
				fac_cabecera_to_clientes.clientes_to_cli_domicilios.entre_calles	= entrega_entre_calles;
				fac_cabecera_to_clientes.clientes_to_cli_domicilios.localidad		= entrega_localidad;
				fac_cabecera_to_clientes.clientes_to_cli_domicilios.calle			= entrega_lugar;
				fac_cabecera_to_clientes.clientes_to_cli_domicilios.provincia_id	= entrega_provincia_id;
				fac_cabecera_to_clientes.clientes_to_cli_domicilios.telefonos		= entrega_telefono;
				fac_cabecera_to_clientes.clientes_to_cli_domicilios.observaciones	= entrega_observaciones;
			}
			else
			{
				globals.DIALOGS.showWarningDialog('Aviso','Por favor complete la dirección de entrega','OK')
				elements.tabs_20.tabIndex = 3;
				return false
			}
		}
	}	

	if (!globals.gAltaRemitoAutomatico(foundset.getRecord(foundset.getSelectedIndex()),globals.zconf_numeracion_remito_packing))
	{
		globals.DIALOGS.showWarningDialog('Aviso','Error en la numeración del remito','OK')
		return false
	}
// DATOS CABECERA
	codigo_afip			= null
	cai					= null
	importe_en_letras 	= globals.nro_a_letra(total);
	tipo 				= globals.zconf_tipo_minorista;

	// NUMERACION
    if (es_nro_manual == 0)   //no es manual
    { 
    	// BUSCAR NRO FACTURA de la sucursal/letra/tipo docum que corresponde
		var fs_nro_fc = databaseManager.getFoundSet(databaseManager.getDataSourceServerName(controller.getDataSource()),'numeracion_cl')
		fs_nro_fc.find()
		fs_nro_fc.sucursal			= sucursal
		fs_nro_fc.letra				= letra
		fs_nro_fc.cod_comprobante	= fac_cabecera_to_tipo_doc.cod_doc_asociado
		var found = fs_nro_fc.search()
		if (found != 1)
    	{
			globals.DIALOGS.showWarningDialog('Aviso','Factura: Sucursal o Letra o Tipo de comprobante incorrectos','OK')
	   		return false; 
    	}
    	else
    	{
		  	var nro_aux = fs_nro_fc.ultimo_numero + 1   // no cambiar hasta comprobar que no existe
		}
    }
    else // es manual 
    {
    	nro_aux = nro_factura;
    }
    //  VALIDAR si existe en fac_cabecera
	globals.fac_cabecera_duplicacion(letra,sucursal,nro_aux, tipo_doc)
	if (globals.fact_filas != 0)  // si es cero, la factura no existe
	{ // ya existe , lo rechaza
		globals.DIALOGS.showWarningDialog('Aviso','Ya existe ' + fac_cabecera_to_tipo_doc.descripcion + ' ' + letra + '-' + utils.numberFormat(sucursal,'0000') + '-' + utils.numberFormat(nro_aux,'00000000'),'OK')
		return false;
	}
		
    if (es_nro_manual == 0)  
    {  //no es manual y no existe, asigna sig. numero
		fs_nro_fc.ultimo_numero = fs_nro_fc.ultimo_numero + 1
		nro_factura = fs_nro_fc.ultimo_numero // poner nro factura en la cabecera
    } 

    //  GENERAR PEDIDO MINORISTA   
    if (entrega_total != 1)
		var $nro_ped = generar_pedido_minorista();
	
    cod_mov_cc = tipo_doc
	// CTACTE  
	fac_cabecera_to_clientes.clientes_to_ctacte_cl.newRecord();
	fac_cabecera_to_clientes.clientes_to_ctacte_cl.cliente_id	= cliente_id;
	fac_cabecera_to_clientes.clientes_to_ctacte_cl.fecha_mov	= fecha
	fac_cabecera_to_clientes.clientes_to_ctacte_cl.nro_factura	= nro_factura
	fac_cabecera_to_clientes.clientes_to_ctacte_cl.cod_mov		= cod_mov_cc
	fac_cabecera_to_clientes.clientes_to_ctacte_cl.tipo_doc		= tipo_doc
	fac_cabecera_to_clientes.clientes_to_ctacte_cl.sucursal		= sucursal
	fac_cabecera_to_clientes.clientes_to_ctacte_cl.letra		= letra
	fac_cabecera_to_clientes.clientes_to_ctacte_cl.fecha_vto	= fecha_vencimiento
	fac_cabecera_to_clientes.clientes_to_ctacte_cl.provincia_id	= fac_cabecera_to_clientes.provincia_id
	fac_cabecera_to_clientes.clientes_to_ctacte_cl.cond_pago_id	= cond_pago_id
	fac_cabecera_to_clientes.clientes_to_ctacte_cl.importe		= total
	if (total > globals.gtotal_valores)  // pago de menos
		fac_cabecera_to_clientes.clientes_to_ctacte_cl.saldo = total - globals.gtotal_valores
	else
		fac_cabecera_to_clientes.clientes_to_ctacte_cl.saldo = 0
	fac_cabecera_to_clientes.clientes_to_ctacte_cl.neto				= neto
	fac_cabecera_to_clientes.clientes_to_ctacte_cl.neto_2			= neto2
	fac_cabecera_to_clientes.clientes_to_ctacte_cl.neto_3			= neto3
	fac_cabecera_to_clientes.clientes_to_ctacte_cl.neto_no_gravado	= neto_no_gravado  
	fac_cabecera_to_clientes.clientes_to_ctacte_cl.iva_porc			= iva1_porc
	fac_cabecera_to_clientes.clientes_to_ctacte_cl.iva_2_porc		= iva2_porc
	fac_cabecera_to_clientes.clientes_to_ctacte_cl.iva_3_porc		= iva3_porc
	fac_cabecera_to_clientes.clientes_to_ctacte_cl.iva				= iva1_imp
	fac_cabecera_to_clientes.clientes_to_ctacte_cl.iva_2			= iva2_imp
	fac_cabecera_to_clientes.clientes_to_ctacte_cl.iva_3			= iva3_imp
	fac_cabecera_to_clientes.clientes_to_ctacte_cl.proyecto_id		= proyecto_id
	
	for (i = 0 ; i < $origenes[0].length ; i++)
	{
		var $origen = fac_cabecera_to_clientes.clientes_to_ctacte_cl.ctacte_cl_to_ctacte_cl_origen
		$origen.newRecord()
		$origen.cod_origen 		= $origenes[0][i]
		$origen.importe 		= $origenes[1][i]
		$origen.importe_signo 	= $origenes[1][i]
		if (fac_cabecera_to_clientes.clientes_to_ctacte_cl.ctacte_cl_to_tab_mov_cl_copia.d_h == 2)
		{
			$origen.importe_signo = $origen.importe_signo *(-1)
		}
	}
	// REGRABA Clientes
	fac_cabecera_to_clientes.fecha_ult_compra = fecha
	
	if (fac_cabecera_to_puntos_venta.tipo_factura == 1)
	{
		//FAC ELECTRONICA
		fac_estado = globals.zconf_fact_electronica
	}
	else
	{
		fac_estado = globals.zconf_fact_ingresada
	}	
	
	// GRABAR TODO
	databaseManager.startTransaction()
	var estado = databaseManager.saveData()
	if (estado == true)
	{
		if (databaseManager.commitTransaction())
		{
		//  MENSAJE FINAL 
			var $msj = fac_cabecera_to_tipo_doc.descripcion + ' Minorista ' + ' ' + letra + '-' + utils.numberFormat(sucursal,'0000') + '-' + utils.numberFormat(nro_factura,'00000000')
			if (entrega_total == 1)  // NO hubo pedido minorista porque fue entrega total
				$msj += '\nGenerada correctamente' ;
			else
				$msj += '\nPedido Minorista: X-' + utils.numberFormat(sucursal,'0000')  + '-' + utils.numberFormat($nro_ped,'0000')+  '\nGenerados correctamente'; 
			
			globals.DIALOGS.showInfoDialog('Aviso',  $msj,  "OK" );
			var $params = {
				pFacturaId 		: cabecera_id,
				pRazonSocial 	: usuarios_to_uservs.razon_social,
				pDireccion		: usuarios_to_uservs.calle_nro,
				pCodPostal		: usuarios_to_uservs.cod_postal,
				pCuit			: usuarios_to_uservs.cuit,
				pCodBrutos		: usuarios_to_uservs.cod_ing_brutos,
				pIva			: usuarios_to_uservs.uservs_to_tipo_iva.tipo_iva_desc,
				pActividad		: usuarios_to_uservs.actividad,
				pTelefono		: usuarios_to_uservs.telefono,
				pEmail			: usuarios_to_uservs.email,
				pInicioActividad : usuarios_to_uservs.inicio_actividad,
				pIconoURL		: usuarios_to_uservs.url_logo,
				pPie			: usuarios_to_uservs.pie_factura
			}
			globals.metodoJasper('impresion', 'ventas/factura.jasper', 'Factura_' + nro_factura, 'infocom', $params)
			iniciar()
		}
		else
		{
			globals.DIALOGS.showWarningDialog('Aviso','No pudo guardarse por un error en la base de datos','OK')
			databaseManager.rollbackTransaction()
			databaseManager.revertEditedRecords()
			iniciar()
		}
	}
	else
	{
		globals.DIALOGS.showWarningDialog('Aviso', fac_cabecera_to_tipo_doc.descripcion + ' Minorista No fue generada - Revise los datos ingresados',  "OK")
		databaseManager.rollbackTransaction()
	}
	return true
}

/**
 * @properties={typeid:24,uuid:"C295A959-CD17-4523-8E42-BAC685FBC095"}
 */
function esconderErrores()
{
	elements.lbl_error_cliente.visible 			= false
	elements.lbl_error_cond_pago.visible 		= false
	elements.lbl_error_fecha.visible 			= false
	elements.lbl_error_total.visible 			= false
	elements.lbl_error_nro_factura.visible 		= false
	elements.lbl_error_concepto.visible			= false
	elements.lbl_error_deposito.visible			= false
	elements.lbl_error_proyecto.visible			= false
}

/**
 * @returns {Boolean} valid value
 *
 * @properties={typeid:24,uuid:"4075AFF8-30A2-4B37-B9FA-1EBB5C496EA0"}
 */
function ver_cond_iva_cliente() 
{
	if (globals.es_fc_exportacion == 1)
		letra = "E";
	else      	
		letra = fac_cabecera_to_clientes.clientes_to_relacion_iva_letra.rel_iva_letra;
	if (letra == null) 
	{
		globals.DIALOGS.showWarningDialog('Aviso','Revise condición de iva en el cliente ','OK')
		return false;	
	}
	return true
}

/**
 * @returns {Boolean} valid value
 *
 * @properties={typeid:24,uuid:"5FCDB22A-3738-4702-AFD6-07E0FC33E98B"}
 */
function calculo_vto() 
{  
	if (fecha)
	{
		if (!cond_pago_id)
		{
			globals.DIALOGS.showWarningDialog('Aviso','Condición de pago no informada','OK')
			return false;
		}
		fecha_vencimiento = new Date (fecha.getFullYear(), fecha.getMonth(), fecha.getDate() + fac_cabecera_to_cond_pago.dias, 0,0,0,0);
		elements.lbl_error_fecha.visible = false
	}
	else
	{
		globals.DIALOGS.showWarningDialog('Aviso','Fecha del comprobante no informada','OK')
		elements.lbl_error_fecha.visible = true
		elements.fecha.requestFocus()
	}
	return true;
}

/**
 * @returns {Boolean} allow hide
 *
 * @properties={typeid:24,uuid:"9B14B425-3BDE-49D2-ABC7-392FE3DEDC67"}
 */
function salir_fac() 
{  // si salia del facturador sin haber confirmado, luego en el form que se usaba a 
   // continuacion no grababa los registros que se daban de alta 19/11/2009
	if (es_preview == 0)
	{
		if (cliente_id != null)
		{
	   		var resp = globals.DIALOGS.showQuestionDialog( 'Confirma',  '¿Seguro que desea salir?' ,  'Si', 'No')
			if (resp == 'Si')
			{
				databaseManager.revertEditedRecords();
				databaseManager.setAutoSave(true)
				return true;
			}
			else
				return false;
		}
		else
		{	
			databaseManager.revertEditedRecords();
			databaseManager.setAutoSave(true)
			return true;
		}	
	}
	return true
}

/**
 * @properties={typeid:24,uuid:"9AA7BAF5-EC37-449B-B967-CEBF8F78C56F"}
 */
function Cancelar() 
{
	databaseManager.revertEditedRecords();
	iniciar();
}

/**
 * @properties={typeid:24,uuid:"E798A765-3851-4626-BE84-BD1097D34B3D"}
 */
function eliminar_renglon() 
{
	var found = fac_cabecera_to_fac_detalle.getSize()
	if (found==0)
	{
		globals.iva_del_producto=null;
		descuento=null
	    iva1_imp=null
	    iva1_porc=null
	    subtotal1=null
	    subtotal2=null
	    total=null
	}
	else
	{
	var resp = globals.DIALOGS.showQuestionDialog( 'Confirma',  '¿Seguro que desea dar de baja? ',  'Si', 'No')
	if (resp == 'Si')
	{
		fac_cabecera_to_fac_detalle.deleteRecord();
		
		totalizar(); // recalcula los totales
		found = fac_cabecera_to_fac_detalle.getSize();
		if (found==0)
		{
		globals.iva_del_producto=null;
		descuento=null;
	    iva1_imp=null;
	    iva1_porc=null;
	    subtotal1=null;
	    subtotal2=null;
	    total=null;
		}		
	}
	}
}

/**
 * @properties={typeid:24,uuid:"DFFEA2FE-449C-4250-B8C2-922DBD63CA07"}
 */
function agregar_renglon() 
{
	if (cliente_id != null)
	{
		forms.fac_mino[elements.tabs_20.getTabRelationNameAt(elements.tabs_20.tabIndex)].newRecord(false);
		forms.fac_mino_1.elements.fld_producto_id.requestFocus();
	}
	else
	{
		globals.DIALOGS.showWarningDialog('Aviso','Debe elegir cliente primero','OK')
	}	
}

/**
 * @returns {Boolean}
 *
 * @properties={typeid:24,uuid:"7B69C52D-53BB-4492-ABFD-66AF34EA4581"}
 */
function ver_existe_ctacte() 
{
	if (es_nro_manual == 1)
	{
		// validar en fac_cabecera
		globals.fac_cabecera_duplicacion(letra,sucursal,nro_factura, tipo_doc)
		if (globals.fact_filas != 0)  // si es cero, la factura no existe
		{
			globals.DIALOGS.showWarningDialog('Aviso','Ya existe ' + fac_cabecera_to_tipo_doc.descripcion + ' ' + letra + '-' + utils.numberFormat(sucursal,'0000') + '-' + utils.numberFormat(nro_factura,'00000000'),'OK')
		}
	}
	return true
}

/**
 * Handle changed data.
 *
 * @param {Object} [oldValue] old value
 * @param {Object} [newValue] new value
 * @param {JSEvent} [event] the event that triggered the action
 *
 * @returns {Boolean}
 *
 * @properties={typeid:24,uuid:"065C9C57-D543-426B-916F-C3654BECC3B9"}
 */
function onDataChange_cliente_id(oldValue, newValue, event) 
{
	globals.gCliente = cliente_id;
	
	if (cliente_id)
	{
		ver_cond_iva_cliente();
		if (fac_cabecera_to_clientes.descuento)
			descuento_porc = fac_cabecera_to_clientes.descuento;
		if (fac_cabecera_to_clientes.cond_pago_id)
		{
			cond_pago_id = fac_cabecera_to_clientes.cond_pago_id;
			calculo_vto();
		}
		if (fac_cabecera_to_clientes.vendedor_id)
			vendedor_id = fac_cabecera_to_clientes.vendedor_id;       
		else 
			vendedor_id = globals.gvendedor;
			
		if (fac_cabecera_to_clientes.bloqueado == 1)
		{
			globals.DIALOGS.showWarningDialog('Aviso','Cliente bloqueado. No puede facturar','OK')
			cliente_id = oldValue
			return true
		}
		if (!validarCreditoCondPago()){
			cliente_id = 0
			return true
		}
		elements.lbl_error_cliente.visible = false
	}
	else
	{
		elements.lbl_error_cliente.visible = true
	}
	fac_cabecera_to_fac_det_valores.deleteAllRecords()
	if (fac_cabecera_to_fac_detalle.getSize() == 0)
		fac_cabecera_to_fac_detalle.newRecord()
	elements.tabs_20.tabIndex = 1
	forms.fac_mino_1.elements.fld_producto_id.requestFocus()
	elements.fld_cond_pago.enabled = true
	return true
}

/**
 * @properties={typeid:24,uuid:"2097CB72-0955-4654-8A3C-245EC6383D82"}
 */
function validarCreditoCondPago(){
	if ((fac_cabecera_to_clientes.credito_asignado == 0 || fac_cabecera_to_clientes.credito_asignado == null) && fac_cabecera_to_cond_pago.dias != 0)
	{
		globals.DIALOGS.showWarningDialog('Aviso','Cliente con crédito en cero. Sólo puede facturar al Contado','OK')
		var $sql = 'SELECT cond_pago_id FROM cond_pago WHERE dias = 0 AND userv_id = ? ORDER BY descripcion'
		var $args = [globals.gUservID]
		var $ds = databaseManager.getDataSetByQuery('infocom',$sql,$args,1)
		if ($ds.getMaxRowIndex() != 1)
		{
			globals.DIALOGS.showWarningDialog('Aviso','No existe condición de pago al contado','OK')
			return false
		}
		cond_pago_id = $ds.getValue(1,1)
		return true
	}
	return true
}

/**
 * @properties={typeid:24,uuid:"458453C4-B103-46AA-9AF4-87653C8F8A4E"}
 * @AllowToRunInFind
 */
function generar_pedido_minorista() 
{
	var $nro_ped = null;
	
	// NUMERACION PEDIDO   Tomado de REMITOS
	var fs_nro_ped = databaseManager.getFoundSet(databaseManager.getDataSourceServerName(controller.getDataSource()),'numeracion_cl')
	fs_nro_ped.find();
	fs_nro_ped.sucursal			= sucursal;
	fs_nro_ped.letra			= 'X';
	fs_nro_ped.cod_comprobante	= globals.zconf_numeracion_pedido
	var found = fs_nro_ped.search();
	if (found != 1)
    {
		globals.DIALOGS.showWarningDialog('Aviso','Pedido: Sucursal o Letra o Tipo de comprobante incorrectos','OK')
		return -1;  
    }
	fs_nro_ped.ultimo_numero = fs_nro_ped.ultimo_numero + 1
	$nro_ped = fs_nro_ped.ultimo_numero;
				
	//  CREA PEDIDO CABECERA // FOUNDSET de PEDIDOS  // se puede hacer con nueva relacion fac-ped
	/** @type {JSFoundSet<db:/infocom/ped_cabecera>}*/
	var fs_ped_cabecera = databaseManager.getFoundSet(databaseManager.getDataSourceServerName(controller.getDataSource()),'ped_cabecera')

	var $rcd_ped = fs_ped_cabecera.getRecord(fs_ped_cabecera.newRecord())
	var $rcd_fac = foundset.getRecord(foundset.getSelectedIndex())
	// llenar CABECERA de NUEVO PEDIDO con datos de la cabecera de la factura minorista
	databaseManager.copyMatchingFields($rcd_fac,$rcd_ped)
	fs_ped_cabecera.letra					= fs_nro_ped.letra;
	fs_ped_cabecera.nro_pedido				= fs_nro_ped.ultimo_numero;
	fs_ped_cabecera.ped_estado				= globals.zconf_ped_facturado
	fs_ped_cabecera.texto					= 'Generado desde Factura ' + letra + '-' + utils.numberFormat(sucursal,'0000') + '-' + utils.numberFormat(nro_factura,'00000000');
	fs_ped_cabecera.tipo					= globals.zconf_tipo_minorista;
	fs_ped_cabecera.deposito				= globals.zparam_deposito_default;
	
	//  LLENAR RENGLONES
	var $cant = fac_cabecera_to_fac_detalle.getSize()
	for (var i = 1 ; i <= $cant ; i++)
	{	
		var $rcd = fac_cabecera_to_fac_detalle.getRecord(i);
		
		fs_ped_cabecera.ped_cabecera_to_ped_detalle.newRecord();
		fs_ped_cabecera.ped_cabecera_to_ped_detalle.cantidad					= $rcd.cantidad_dec
		fs_ped_cabecera.ped_cabecera_to_ped_detalle.cantidad_pendiente_entrega	= fs_ped_cabecera.ped_cabecera_to_ped_detalle.cantidad;
		fs_ped_cabecera.ped_cabecera_to_ped_detalle.descuento_porc				= $rcd.descuento_porc
		fs_ped_cabecera.ped_cabecera_to_ped_detalle.descuento_importe			= $rcd.descuento_importe
		fs_ped_cabecera.ped_cabecera_to_ped_detalle.precio_unitario				= $rcd.precio_unitario
		fs_ped_cabecera.ped_cabecera_to_ped_detalle.producto_id					= $rcd.producto_id
		fs_ped_cabecera.ped_cabecera_to_ped_detalle.total_renglon				= $rcd.total_renglon
		
		fs_ped_cabecera.ped_cabecera_to_ped_detalle.ped_detalle_to_productos.stock_pend_entrega += fs_ped_cabecera.ped_cabecera_to_ped_detalle.cantidad
		fs_ped_cabecera.ped_cabecera_to_ped_detalle.ped_detalle_to_productos.productos_to_existencias_x_dep.exi_pend_entrega += fs_ped_cabecera.ped_cabecera_to_ped_detalle.cantidad
	}
	return $nro_ped
}

/**
 * @properties={typeid:24,uuid:"4E061824-B10E-4B7E-A4B9-17FEACA4C7A2"}
 */
function iniciar() 
{
	databaseManager.setAutoSave(false);
	controller.newRecord();
	descuento 		= 0;
	var $fecha 		= application.getServerTimeStamp();
	fecha 			= new Date( $fecha.getFullYear(), $fecha.getMonth(), $fecha.getDate(), 0,0,0,0)
	tipo_doc		= 1;  // sugiere factura (1 en tabla tipo_doc)
	cond_pago_id	= globals.zparam_cond_pago_default;
	flete			= 0;
	retira			= 0;
	entrega_fecha	= application.getServerTimeStamp();
	descuento_porc	= 0;
	vendedor_id		= globals.gvendedor;
	entrega_total	= 0;
	paga_con		= 0;
	fac_concepto_id	= globals.zparam_fact_concepto	
	
	es_preview 			= 0
	es_nro_manual		= 0
	f_total_efectivo 	= 0
	f_diferencia		= 0

	globals.es_fc_exportacion 	= 0   // FC exportacion p/no extranjero= para Vagol no se usa-> se quita campo del form
	globals.gdeposito			= globals.zparam_deposito_default;
	globals.gtotal_valores		= 0;
	globals.gcumplimiento		= null;

	calculo_vto();
	
	elements.fld_nro_manual.visible = globals.zparam_fact_nro_manual
	esconderErrores()
	elements.flete_importe.enabled		= false;
	forms.fac_envio.controller.readOnly = false
	elements.fld_cliente_id.requestFocus()
}

/**
 * @properties={typeid:24,uuid:"DA424E1F-1C4E-4C89-A9B8-8D4A2685ACCF"}
 */
function totales_valores() 
{
	f_total_efectivo = 0
	globals.gtotal_valores = 0
	var $cant = fac_cabecera_to_fac_det_valores.getSize()
	
	for ( var i = 1 ; i <= $cant ; i++ )
	{
		var $rcd = fac_cabecera_to_fac_det_valores.getRecord(i)
		globals.gtotal_valores += $rcd.importe
		if ($rcd.valor_id != null)
		{
			if ($rcd.fac_det_valores_to_valores.es_cheque != 1 && $rcd.fac_det_valores_to_valores.usa_cta_bco != 1 && $rcd.fac_det_valores_to_valores.es_tarjeta != 1)
			{ // no es tarjeta => es efectivo 
				f_total_efectivo += $rcd.importe
			}
		} 
	} // fin del for
	f_diferencia = total - globals.gtotal_valores;
}

/**
 * @properties={typeid:24,uuid:"270B0C4C-6511-4CCA-A4FC-3270D07A3290"}
 */
function alta_cliente() 
{
	//  OJO = c/vez q va al forms.clientes_alta ,x alta o modif. hace rollback y se pierde los cargado la fac.minorista
	databaseManager.revertEditedRecords()
	controller.loadRecords(null);
	
	globals.formEnVentana('clientes_alta','clientes_alta','Alta de Clientes')
	
	iniciar();
	if (globals.gClienteDesde != null)
	{
		cliente_id = globals.gClienteDesde //  global seteada en el form clientes_alta
		onDataChange_cliente_id();
	}
}

/**
 * Handle changed data.
 *
 * @param {Object} oldValue old value
 * @param {Object} newValue new value
 * @param {JSEvent} event the event that triggered the action
 *
 * @returns {Boolean}
 *
 * @properties={typeid:24,uuid:"56E87DCD-A9E9-4AE1-818F-2913DC912B17"}
 */
function onDataChange_fecha_entrega(oldValue, newValue, event) 
{
	if (entrega_fecha < utils.timestampToDate(fecha))
	{
		globals.DIALOGS.showWarningDialog('Aviso','Fecha de entrega no puede ser menor a la fecha de la factura','OK')
		entrega_fecha = oldValue;
	}
	return true;
}

/**
 * @properties={typeid:24,uuid:"7125EECA-960C-4261-83CE-39E1FCDE836A"}
 */
function totalizar() 
{
	// SUMA RENGLONES
	iva1_imp 		= 0
	iva2_imp 		= 0
	iva3_imp 		= 0
	iva1_porc 		= null
	iva2_porc 		= null
	iva3_porc 		= null
	neto			= 0
	neto2			= 0
	neto3			= 0
	neto_no_gravado = 0
	
	var $tot_iva	= 0
	var $subtotal1 	= 0
	var $cant 		= fac_cabecera_to_fac_detalle.getSize()
	for ( var i = 1 ; i <= $cant ; i++ )
	{
		var $rcd = fac_cabecera_to_fac_detalle.getRecord(i)
		if ($rcd.producto_id)
		{
			if ($rcd.fac_detalle_to_productos.tipo_descripcion != 2)
			{
				$rcd.msj_error = ''
				if (!$rcd.cantidad_dec)
				{
					$rcd.msj_error = '-Cantidad '
				}
				if (!$rcd.precio_unitario)
				{
					$rcd.msj_error += '-P Unit.'
				}
				var $total_r = utils.stringToNumber(utils.numberFormat($rcd.precio_unitario * $rcd.cantidad_dec, 2)) - $rcd.descuento_importe
				
				$subtotal1 	+= $total_r
				if ($rcd.fac_detalle_to_productos.grava_iva == 1)
				{
					var $iva	= utils.stringToNumber(utils.numberFormat($total_r * $rcd.iva_porc / 100, 2))
					agregaIva($rcd.iva_porc, $iva, $total_r)
					$tot_iva += $iva
				}
				else
				{
					neto_no_gravado += $total_r
				}
			}
		}
	}
	subtotal1 		= $subtotal1
	descuento 		= utils.stringToNumber(utils.numberFormat($subtotal1 * descuento_porc / 100, 2))
	subtotal2 		= $subtotal1 - descuento
	neto 			= utils.stringToNumber(utils.numberFormat(neto * (1 - descuento_porc / 100), 2))
	neto2 			= utils.stringToNumber(utils.numberFormat(neto2 * (1 - descuento_porc / 100), 2))
	neto3 			= utils.stringToNumber(utils.numberFormat(neto3 * (1 - descuento_porc / 100), 2))
	
	iva1_imp		= utils.stringToNumber(utils.numberFormat(iva1_imp * (1 - descuento_porc / 100), 2))
	iva2_imp 		= utils.stringToNumber(utils.numberFormat(iva2_imp * (1 - descuento_porc / 100), 2))
	iva3_imp 		= utils.stringToNumber(utils.numberFormat(iva3_imp * (1 - descuento_porc / 100), 2))
	$tot_iva		= iva1_imp + iva2_imp + iva3_imp
	
	neto_no_gravado	= utils.stringToNumber(utils.numberFormat(neto_no_gravado * (1 - descuento_porc / 100), 2))	
	if (flete == 1)
	{
		subtotal2 += flete_importe
		var $iva_flete = utils.stringToNumber(utils.numberFormat(flete_importe * (globals.zparam_flete_iva_porc / 100), 2))	
		$tot_iva += $iva_flete
		agregaIva(globals.zparam_flete_iva_porc,$iva_flete,flete_importe)
	}
	// IVA PARA pie de FACTURA 
	if (forms.fac_mino.fac_cabecera_to_clientes.clientes_to_relacion_iva_letra.rel_iva_calcula != 1)
	{ //para exportacion
		total = subtotal2
	}
	else
	{ 
		total = subtotal2 + $tot_iva
	}
	f_diferencia = total - globals.gtotal_valores;
	if (total == 0)
	{
		elements.lbl_error_total.visible = true
	}
	else
	{
		elements.lbl_error_total.visible = false
	}
}

/**
 * Handle changed data.
 *
 * @param {Object} oldValue old value
 * @param {Object} newValue new value
 * @param {JSEvent} event the event that triggered the action
 *
 * @returns {Boolean}
 *
 * @properties={typeid:24,uuid:"2497BDD5-EAA1-4822-B33B-2E0A367A9F04"}
 */
function onDataChange_paga_con(oldValue, newValue, event)
{ 
	if(f_total_efectivo>0) 
	{
		if (f_total_efectivo>paga_con) 
		{
			globals.DIALOGS.showWarningDialog('Aviso','"Paga con" es menor que el efectivo a pagar','OK')
		}
		else  //  se obliga a ingrasar paga con?
		{
			if (paga_con==null || paga_con==0)
			{
				var resp=globals.DIALOGS.showQuestionDialog('Generador de Facturas y Notas', '¿Informa "Paga con" ?', "Si" , "No");
				if (resp=="Si")
				{ 
					return true; 
				}	
				else
					vuelto=0;
			}
			else
				vuelto = paga_con - f_total_efectivo
		}
	}
	else
	{
		globals.DIALOGS.showWarningDialog('Aviso','No hay efectivo ingresado,  no llenar "Paga con"','OK') 
		paga_con=0;
	}
	return true;
}

/**
 * Handle changed data.
 *
 * @param {Number} oldValue old value
 * @param {Number} newValue new value
 * @param {JSEvent} event the event that triggered the action
 *
 * @returns {Boolean}
 *
 * @properties={typeid:24,uuid:"6E36BCD3-026C-461B-B4C2-80E713866057"}
 */
function onDataChangeNroManual(oldValue, newValue, event) {
	elements.fld_nro_factura.editable = newValue
	elements.fld_nro_factura.requestFocus()
	return true
}

/**
 * Handle changed data.
 *
 * @param {Number} oldValue old value
 * @param {Number} newValue new value
 * @param {JSEvent} event the event that triggered the action
 *
 * @returns {Boolean}
 *
 * @properties={typeid:24,uuid:"8A637700-1968-47FC-A937-866155E9A903"}
 */
function onDataChangeCondPago(oldValue, newValue, event) {
	if (!validarCreditoCondPago()){
		cliente_id = 0
		return true
	}
	calculo_vto();
	return true
}

/**
 * @param {Number} porcentaje
 * @param {Number} iva_importe
 * @param {Number} importe_neto
 * 
 * @properties={typeid:24,uuid:"AD950C74-D5BF-4415-93B1-859A2ED2ABF0"}
 */
function agregaIva(porcentaje, iva_importe, importe_neto)
{
	if (iva1_porc == null)
	{
		iva1_porc 	= porcentaje
		iva1_imp 	= iva_importe.toFixed(2) * 1
		neto		= importe_neto.toFixed(2) * 1
	}
	else
	{
		if (porcentaje != iva1_porc)
		{
			if (iva2_porc == null)
			{
				iva2_porc 	= porcentaje
				iva2_imp 	= iva_importe.toFixed(2) * 1
				neto2		= importe_neto.toFixed(2) * 1
			}
			else
			{
				if (porcentaje != iva2_porc)
				{
					iva3_porc 	= porcentaje
					iva3_imp 	+= iva_importe.toFixed(2) * 1
					neto3		+= importe_neto.toFixed(2) * 1
				}
				else
				{
					iva2_porc 	= porcentaje
					iva2_imp 	+= iva_importe.toFixed(2) * 1
					neto2		+= importe_neto.toFixed(2) * 1
				}
			}
		}
		else
		{
			iva1_porc 	= porcentaje
			iva1_imp 	+= iva_importe.toFixed(2) * 1
			neto		+= importe_neto.toFixed(2) * 1
		}
	}
}

/**
 * Callback method when the user changes tab in a tab panel or divider position in split pane.
 *
 * @param {Number} previousIndex index of tab shown before the change
 * @param {JSEvent} event the event that triggered the action
 *
 * @properties={typeid:24,uuid:"70BF023E-ACCF-43A5-9349-0D8AA46FF751"}
 */
function onTabChange(previousIndex, event) {
	if(elements.tabs_20.tabIndex == 3)
	{
		elements.boton_agregar.visible = false
		elements.boton_eliminar.visible = false
	}
	else
	{
		elements.boton_agregar.visible = true
		elements.boton_eliminar.visible = true
	}
}
